import http from '../utils/request'

/**
 * 获取论坛板块列表接口
 * @returns {Promise}
 */
export const getForumCategories = () => {
  return http.get('/api/forum/categories')
}

/**
 * 获取帖子列表接口
 * @param {Object} params - 请求参数
 * @param {number} [params.sectionId] - 板块ID（可选）
 * @param {string} [params.order] - 排序方式（可选，'hot'热门, 'latest'最新）
 * @param {number} [params.page] - 页码（可选，默认1）
 * @param {number} [params.pageSize] - 每页数量（可选，默认10）
 * @returns {Promise}
 */
export const getForumPosts = (params = {}) => {
  return http.get('/api/forum/posts', { params })
}

/**
 * 获取帖子详情接口
 * @param {number} id - 帖子ID
 * @returns {Promise}
 */
export const getForumPostDetail = (id) => {
  return http.get(`/api/forum/posts/${id}`)
}

/**
 * 创建帖子接口
 * @param {Object} data - 帖子数据
 * @param {string} data.title - 帖子标题
 * @param {string} data.content - 帖子内容
 * @param {number} data.categoryId - 板块ID
 * @param {Array<string>} [data.tags] - 标签（可选）
 * @param {boolean} [data.isTop] - 是否置顶（可选，默认false）
 * @returns {Promise}
 */
export const createForumPost = (data) => {
  return http.post('/api/forum/posts', data)
}

/**
 * 更新帖子接口
 * @param {number} id - 帖子ID
 * @param {Object} data - 帖子数据
 * @param {string} [data.title] - 帖子标题（可选）
 * @param {string} [data.content] - 帖子内容（可选）
 * @param {number} [data.categoryId] - 板块ID（可选）
 * @param {Array<string>} [data.tags] - 标签（可选）
 * @param {boolean} [data.isTop] - 是否置顶（可选）
 * @returns {Promise}
 */
export const updateForumPost = (id, data) => {
  return http.put(`/api/forum/posts/${id}`, data)
}

/**
 * 删除帖子接口
 * @param {number} id - 帖子ID
 * @returns {Promise}
 */
export const deleteForumPost = (id) => {
  return http.delete(`/api/forum/posts/${id}`)
}

/**
 * 创建回复接口
 * @param {number} postId - 帖子ID
 * @param {Object} data - 回复数据
 * @param {string} data.content - 回复内容
 * @param {number} [data.parentId] - 父回复ID（可选，用于回复评论）
 * @returns {Promise}
 */
export const createReply = (postId, data) => {
  return http.post(`/api/forum/posts/${postId}/replies`, data)
}

/**
 * 获取帖子回复列表接口
 * @param {number} postId - 帖子ID
 * @param {Object} params - 请求参数
 * @param {number} [params.page] - 页码（可选，默认1）
 * @param {number} [params.limit] - 每页数量（可选，默认10）
 * @returns {Promise}
 */
export const getPostReplies = (postId, params = {}) => {
  return http.get(`/api/forum/posts/${postId}/replies`, { params })
}

/**
 * 点赞/取消点赞帖子接口
 * @param {number} postId - 帖子ID
 * @returns {Promise}
 */
export const likePost = (postId) => {
  return http.post(`/api/forum/posts/${postId}/like`)
}

// 取消收藏帖子
export const unfavoritePost = (postId) => {
  return http.delete(`/api/forum/posts/${postId}/favorite`)
}

// 搜索帖子
export const searchPosts = (params = {}) => {
  return http.get('/api/forum/posts/search', { params })
}

// 获取用户互动统计
export const getUserForumStats = () => {
  return http.get('/api/forum/user/stats')
}

// 获取通知列表
export const getNotifications = (params = {}) => {
  return http.get('/api/forum/notifications', { params })
}

// 标记通知为已读函数已移至文件末尾


/**
 * 更新回复接口
 * @param {number} replyId - 回复ID
 * @param {Object} data - 回复数据
 * @param {string} data.content - 回复内容
 * @returns {Promise}
 */
export const updateReply = (replyId, data) => {
  return http.put(`/api/forum/replies/${replyId}`, data)
}

/**
 * 删除回复接口
 * @param {number} replyId - 回复ID
 * @returns {Promise}
 */
export const deleteReply = (replyId) => {
  return http.delete(`/api/forum/replies/${replyId}`)
}

/**
 * 点赞/取消点赞回复接口
 * @param {number} replyId - 回复ID
 * @returns {Promise}
 */
export const likeReply = (replyId) => {
  return http.post(`/api/forum/replies/${replyId}/like`)
}

/**
 * 收藏/取消收藏帖子接口
 * @param {number} postId - 帖子ID
 * @returns {Promise}
 */
export const favoritePost = (postId) => {
  return http.post(`/api/forum/posts/${postId}/favorite`)
}

/**
 * 获取标签列表接口
 * @returns {Promise}
 */
export const getForumTags = () => {
  return http.get('/api/forum/tags')
}

/**
 * 获取论坛统计数据接口
 * @returns {Promise}
 */
export const getForumStats = () => {
  return http.get('/api/forum/stats')
}

/**
 * 获取用户发布的帖子接口
 * @param {number} userId - 用户ID
 * @param {Object} params - 请求参数
 * @param {number} [params.page] - 页码（可选，默认1）
 * @param {number} [params.limit] - 每页数量（可选，默认10）
 * @returns {Promise}
 */
export const getUserPosts = (userId, params = {}) => {
  return http.get(`/api/forum/users/${userId}/posts`, { params })
}

/**
 * 获取用户收藏的帖子接口
 * @param {number} userId - 用户ID
 * @param {Object} params - 请求参数
 * @param {number} [params.page] - 页码（可选，默认1）
 * @param {number} [params.limit] - 每页数量（可选，默认10）
 * @returns {Promise}
 */
export const getUserFavorites = (userId, params = {}) => {
  return http.get(`/api/forum/users/${userId}/favorites`, { params })
}

/**
 * 获取用户的回复接口
 * @param {number} userId - 用户ID
 * @param {Object} params - 请求参数
 * @param {number} [params.page] - 页码（可选，默认1）
 * @param {number} [params.limit] - 每页数量（可选，默认10）
 * @returns {Promise}
 */
export const getUserReplies = (userId, params = {}) => {
  return http.get(`/api/forum/users/${userId}/replies`, { params })
}

/**
 * 获取用户点赞的帖子接口
 * @param {number} userId - 用户ID
 * @param {Object} params - 请求参数
 * @param {number} [params.page] - 页码（可选，默认1）
 * @param {number} [params.limit] - 每页数量（可选，默认10）
 * @returns {Promise}
 */
export const getUserLikes = (userId, params = {}) => {
  return http.get(`/api/forum/users/${userId}/likes`, { params })
}

/**
 * 搜索帖子接口
 * @param {string} keyword - 搜索关键词
 * @param {Object} params - 其他请求参数
 * @param {number} [params.categoryId] - 板块ID（可选）
 * @param {number} [params.page] - 页码（可选，默认1）
 * @param {number} [params.pageSize] - 每页数量（可选，默认10）
 * @returns {Promise}
 */
export const searchForumPosts = (keyword, params = {}) => {
  return http.get('/api/forum/posts/search', { params: { keyword, ...params } })
}

/**
 * 获取用户消息通知列表
 * @param {Object} params - 请求参数
 * @param {number} [params.page] - 页码（可选，默认1）
 * @param {number} [params.limit] - 每页数量（可选，默认10）
 * @returns {Promise}
 */
export const getUserNotifications = (params = {}) => {
  return http.get('/api/forum/notifications', { params })
}

/**
 * 标记消息通知为已读
 * @param {number} notificationId - 通知ID
 * @returns {Promise}
 */
export const markNotificationAsRead = (notificationId) => {
  return http.put(`/api/forum/notifications/${notificationId}/read`)
}

/**
 * 标记所有消息通知为已读
 * @returns {Promise}
 */
export const markAllNotificationsAsRead = () => {
  return http.put('/api/forum/notifications/read-all')
}